| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | 
							- using UnityEngine;
 
- using Random = UnityEngine.Random;
 
- namespace Dustyroom {
 
- public class FloatingMotion : MonoBehaviour {
 
-     public float verticalAmplitude = 1.0f;
 
-     public float horizontalAmplitude = 0.0f;
 
-     [Space]
 
-     public float speed = 1.0f;
 
-     [Space, Tooltip("In seconds")]
 
-     public float startDelay = 0;
 
-     [Space]
 
-     public bool worldSpace = false;
 
-     private Vector3 initialPosition;
 
-     private float offsetH = 0f;
 
-     private float offsetV = 0f;
 
-     private bool isMoving = false;
 
-     void Start() {
 
-         Invoke("Initialize", startDelay);
 
-     }
 
-     private void Initialize() {
 
-         initialPosition = worldSpace ? transform.position : transform.localPosition;
 
-         offsetH = Random.value * 1000f;
 
-         offsetV = Random.value * 1000f;
 
-         isMoving = true;
 
-     }
 
-     void Update() {
 
-         if (!isMoving) {
 
-             return;
 
-         }
 
-         var hDirection = new Vector3(Mathf.Sin(Time.timeSinceLevelLoad * speed * 0.5f + offsetV + 100f), 0f,
 
-                                      Mathf.Cos(Time.timeSinceLevelLoad * speed + offsetV + 100f));
 
-         Vector3 offset = Vector3.up * Mathf.Sin(Time.timeSinceLevelLoad * speed + offsetH) * verticalAmplitude +
 
-                          hDirection * Mathf.Sin(Time.timeSinceLevelLoad * speed + offsetV) * horizontalAmplitude;
 
-         Vector3 position = initialPosition + offset * Time.timeScale;
 
-         if (worldSpace) {
 
-             transform.position = position;
 
-         } else {
 
-             transform.localPosition = position;
 
-         }
 
-     }
 
- }
 
- }
 
 
  |